package com.situ.web.service;

import java.util.List;

import com.situ.web.dao.StudentDao;
import com.situ.web.entity.PageInfo;
import com.situ.web.entity.Student;

public class StudentService {
	private StudentDao studentDao = new StudentDao();

	// 业务逻辑：在所有学生的name前面加上班级名"Java1912"
	// name=张三32   name=Java1912-张三32
	public List<Student> findAll() {
		List<Student> list = studentDao.findAll();
		return list;
	}

	public boolean deleteById(int id) {
		//dao层返回影响的行数
		int count = studentDao.deleteById(id);
		// 在service层根据影响的行数判断成功还是失败返回给controller层
		if (count == 1) {
			return true;
		} else {
			return false;
		}
	}
	
	public boolean insert(Student student) {
		// 1、查询当前名字的学生是不是已经存在
		// List<Student> list = studentDao.findByName(student.getName());
		// if(list.size() >= 1) {
		//	 System.out.println("改名字的用户已经存在");
		//	 return false;
		// } else {
		//	 int count = studentDao.insert(student);
		// }
		int count = studentDao.insert(student);
		if (count == 1) {
			return true;
		} else {
			return false;
		}
	}

	public Student selectById(int id) {
		Student student = studentDao.selectById(id);
		return student;
	}
	
	public boolean update(Student student) {
		int count = studentDao.update(student);
		if (count == 1) {
			return true;
		} else {
			return false;
		}
	}

	public PageInfo findByPage(int pageNo, int pageSize) {
		PageInfo pageInfo = new PageInfo();
		// 当前是第几页
		pageInfo.setPageNo(pageNo);
		// 一页有多少条数据
		pageInfo.setPageSize(pageSize);
		
		// totalPage:一共有多少页
		int totalCount = studentDao.getTotalCount();// 查询student表里面一共有多少条数据
		// int totalCount=17  int pageSize=5
		// totalCount/pageSize = 3 因为两个整数相除的结果还是整数
		// 应该转换成小数相除，结果就是小数3.4，向上取整时候就是4
		int totalPage = (int)Math.ceil((double)totalCount / pageSize);
		pageInfo.setTotalPage(totalPage);
		
		// list:存放当前这一页的数据
		int offset = (pageNo - 1) * pageSize;
		List<Student> list = studentDao.findByPage(offset, pageSize);
		pageInfo.setList(list);
		
		return pageInfo;
	}

	public boolean checkName(String name) {
		int count = studentDao.selectCountByName(name);
//		if (count > 0) {
//			return true;
//		} else {
//			return false;
//		}
		return count > 0 ? true : false;
	}
	
	
	
	
	
}
